Rev 1755 | Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | RSS feed
<%@ page import="jomm.dao.impl.AbstractDao" %>
<%@ page import="org.json.JSONArray" %>
<%@ page import="pt.estgp.estgweb.domain.RepositoryDocumentInterfaceImpl" %>
<%@ page import="pt.estgp.estgweb.domain.dao.DaoFactory" %>
<%@ page import="pt.estgp.estgweb.services.data.repositorydocuments.RepositoryDocumentService" %>
<%@ page import="pt.estgp.estgweb.services.data.repositorydocuments.interfaces.RepositoryInterface" %>
<%@ taglib uri="/WEB-INF/tlds/struts-html.tld" prefix="html" %>
<%@ taglib uri="/WEB-INF/tlds/struts-nested.tld" prefix="nested" %>
<%@ taglib uri="/WEB-INF/tlds/struts-logic.tld" prefix="logic" %>
<%@ taglib uri="/WEB-INF/tlds/struts-bean.tld" prefix="bean" %>
<%@ taglib uri="/WEB-INF/tlds/struts-tiles.tld" prefix="tiles" %>
<%@ taglib tagdir="/WEB-INF/tags" prefix="bacoTags" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%
long id = Long.parseLong(request.getParameter("id"));
AbstractDao.getCurrentSession().beginTransaction();
JSONArray collectionsArrayOrderedTree = new RepositoryDocumentService().loadCollectionsOrderedAsTree();
RepositoryDocumentInterfaceImpl repoInterface = (RepositoryDocumentInterfaceImpl) DaoFactory.getRepositoryDocumentInterfaceDaoImpl().get(id);
RepositoryInterface repositoryInterface = repoInterface.getRepositoryInterface();
if(repositoryInterface == null)
{
repositoryInterface = new RepositoryInterface();
repoInterface.setRepositoryInterface(repositoryInterface);
}
String jsonData = repositoryInterface.toJson();
AbstractDao.getCurrentSession().getTransaction().commit();
%>
<div class="container-fluid">
<div id="treeAppPageContent" ng-app="treeAppPageContent" ng-controller="treeAppPageContentController">
<script>
ping();
var treeAppPageContent = angular.module('treeAppPageContent', ['ui.tree']);
GLOBAL_BacoAngularAppDependencies.push('treeAppPageContent');
<!-- estes codigos todos do remove e do toggle e etc's não mechi em nada limitei-me a copiar dos gajos-->
treeAppPageContent.controller('treeAppPageContentController', function ($scope) {
/*$scope.data = {
"showTitle" : true,
"showDescription" : false
};*/
//$scope.myDate = new Date();
//$scope.data = {"description":"RepoDesc","rows":[{"columns":[{"blocks":[{"collectionIds":[1],"description":"bloco1desc","maxPublishDate":'2015-12-15T23:00:00.000Z',"maxPublishDateStr":"","minPublishDate":null,"minPublishDateStr":"","orderBy":"publishDateDesc","showDescription":false,"showDocumentDescription":true,"showDocumentMetaData":false,"showDocumentTitle":true,"showFileDescription":false,"showFileTitle":true,"showTitle":true,"title":"bloco1","tree":false,"type":"block"}],"cols":6,"description":"col1Desc","rows":[],"showDescription":false,"showTitle":true,"title":"col1Title","type":"column"},{"blocks&
quot;:[{"collectionIds":[4],"description":"bloco2desc","maxPublishDate":null,"maxPublishDateStr":"","minPublishDate":null,"minPublishDateStr":"","orderBy":"title","showDescription":false,"showDocumentDescription":true,"showDocumentMetaData":false,"showDocumentTitle":true,"showFileDescription":false,"showFileTitle":true,"showTitle":true,"title":"bloco2","tree":false,"type":"block"}],"cols":6,"description":"col2Desc","rows":[],"showDescription":false,"showTitle":true,"title":"col2Title","type":"column"}],"description":"Row 1 Desc","showDescription":false,"showTitle":true,"title":"Row 1 title","type":"row"}],
"showDescription":true,"showTitle":true,"title":"Teste"}
$scope.data = <%=jsonData%>
;
$scope.collections = <%=collectionsArrayOrderedTree.toString()%>;
/*
$scope.data = [
{
"id" : 1,
"name" : "Nao deixa fazer drag",
"nodrag" : true,
"isDirectory" : true
},
{
"id" : 2,
"name" : "Nao deixa fazer drop",
"nodrop" : true,
"isDirectory" : true
},
{
"id" : 3,
"name" : "Deixa fazer Tudo",
"isDirectory" : true
},
{
"id" : 4,
"name" : "Deixa fazer Tudo e ja foi movido",
"moved" : true,
"isDirectory" : true
},
{
"id" : 5,
"name" : "Exemplo de folha nao deixa abrir",
"isDirectory" : false
}
];*/
$scope.treeOptions = {
accept: function(sourceNodeScope, destNodesScope, destIndex) {
//if(destNodesScope)
//console.log(destNodesScope);
//console.log(sourceNodeScope);
//console.log(destIndex);
//console.log(destNodesScope.$parent.$modelValue.title);
//console.log(destNodesScope.$modelValue[0].type);
if(sourceNodeScope.$modelValue.type == destNodesScope.$modelValue[0].type)
return true;
return false;
},
dropped: function(e) {
//console.log (e.source.nodeScope.$modelValue);
//alert ("Largado o nó com nome: " + e.source.nodeScope.$modelValue.name + " sobre " + e.dest.nodesScope.$parent.$modelValue.name);
}
};
$scope.addRow = function(container)
{
if(!container.rows)
{
container.rows = [];
}
container.rows.push(
{
"showTitle" : true,
"showDescription" : false,
"type" : "row"
}
);
}
$scope.removeRow = function(parent,index)
{
parent.rows.splice(index,1);
}
$scope.removeColumn = function(parent,index)
{
parent.columns.splice(index,1);
}
$scope.removeBlock = function(parent,index)
{
parent.blocks.splice(index,1);
}
$scope.addColumn = function(row)
{
if(!row.columns)
{
row.columns = [];
}
row.columns.push(
{
"showTitle" : true,
"showDescription" : false,
"cols" : 6,
"type" : "column"
}
);
}
$scope.addBlock = function(column)
{
if(!column.blocks)
{
column.blocks = [];
}
column.blocks.push(
{
"showTitle" : true,
"showDescription" : false,
"cols" : 6,
"type" : "block",
"orderBy" : "publishDateDesc",
"tree": false,
"showDocumentMetaData" : false,
"datesFormat" : "YY",
"showFileTitle" : true,
"showFileDescription": false
}
);
}
$scope.addCollectionId = function(block)
{
if(!block.collectionIds)
{
block.collectionIds = [];
}
var colId = block.choosedCol.id;
var found = block.collectionIds.filter(function(id){ return id === colId });
if(found.length == 0)
{
block.collectionIds.push(colId);
}
}
$scope.removeCollectionId = function(block,$index)
{
block.collectionIds.splice($index,1);
}
$scope.getColStyle = function(column)
{
return "col-md-" + column.cols;
}
$scope.getCollectionTreeName = function(cid)
{
var found = $scope.collections.filter(function(collection){ return collection.id === cid })[0];
//console.log(found.treeName);
return found.pathName;
}
$scope.setMaxPublishDate = function ($event,block) {
var datetimepicker = $($event.target).parents(".form-group").find(".datetimepicker");
$(datetimepicker).datetimepicker({locale: 'pt',format: 'YYYY/MM/DD'})
.on("dp.change", function (data) {
//alert($("#"+datePicker).find("input").val());
block.maxPublishDateStr = $(datetimepicker).find("input").val();
$scope.$apply();
});
}
$scope.setMinPublishDate = function ($event,block) {
var datetimepicker = $($event.target).parents(".form-group").find(".datetimepicker");
$(datetimepicker).datetimepicker({locale: 'pt',format: 'YYYY/MM/DD'})
.on("dp.change", function (data) {
//alert($("#"+datePicker).find("input").val());
block.minPublishDateStr = $(datetimepicker).find("input").val();
$scope.$apply();
});
}
$scope.clearDateMax = function(block)
{
block.maxPublishDateStr = "";
}
$scope.clearDateMin = function(block)
{
block.minPublishDateStr = "";
}
//Meotodo necessário para incializar os pickers após serem criados
$scope.updateDatetimePickers = function()
{
$('.datetimepicker').datetimepicker({
locale: 'pt',
format: 'YYYY/MM/DD'
});
}
$scope.saveRepositoryInterfaceData = function()
{
widgetSimpleCallWithActionParameters(
"<%=request.getContextPath()%>/user/repositoryDoc.do",
"saveRepositoryInterfaceData",
{
"id" : <%=id%>,
"data" : JSON.stringify($scope.data)
},
"#treeAppPageContent",
function()
{
modalWebMessagesGivenContainer("Dados salvos","#treeAppPageContent");
},
function()
{
modalWebMessagesGivenContainer("Ocorreram erros","#treeAppPageContent");
}
);
}
}
);
</script>
<div class="panel panel-primary">
<div class="panel-heading clearfix">
Criação de Interface para o Repositório Digital
</div>
<div class="panel-body">
<div class="web-messages"></div>
<div class="form-horizontal">
<div class="form-group">
<label class="col-md-1 control-label">ID</label>
<div class="col-md-11">
<input disabled type="text" class="form-control" value="<%=id%>"/>
</div>
</div>
<div class="form-group">
<label class="col-md-1 control-label">Margens Mínimas</label>
<div class="col-md-11">
<select ng-class="{'bg-red': data.containerFluid == false, 'bg-green': data.containerFluid == true}" class="form-control chosenOff" type="text" ng-model="data.containerFluid" ng-options="o.v as o.n for o in [{ n: 'Sim', v: true }, { n: 'Não', v: false }]">>
</select>
</div>
</div>
<div class="form-group">
<label class="col-md-1 control-label">Título</label>
<div class="col-md-9">
<input type="text" class="form-control" ng-model="data.title"/>
</div>
<div class="col-md-2">
<select ng-class="{'bg-red': data.showTitle == false, 'bg-green': data.showTitle == true}" class="form-control chosenOff" type="text" ng-model="data.showTitle" ng-options="o.v as o.n for o in [{ n: 'Mostrar', v: true }, { n: 'Não Mostrar', v: false }]">>
</select>
</div>
</div>
<div class="form-group">
<label class="col-md-1 control-label">Descrição</label>
<div class="col-md-9">
<textarea rows="3" class="form-control" ng-model="data.description">
</textarea>
</div>
<div class="col-md-2" >
<select ng-class="{'bg-red': data.showDescription == false, 'bg-green': data.showDescription == true}" class="form-control chosenOff" type="text" ng-model="data.showDescription" ng-options="o.v as o.n for o in [{ n: 'Mostrar', v: true }, { n: 'Não Mostrar', v: false }]">>
</select>
</div>
</div>
<div class="panel panel-info">
<div class="panel-heading">
Linhas
<button ng-click="addRow(data)" class="btn btn-default pull-right"><span class="glyphicon glyphicon-plus"></span> Linha</button>
</div>
<div class="panel-body" ui-tree="treeOptions" id="page-content-root">
<div style="padding: 10px" ui-tree-nodes ng-model="data.rows">
<div ng-repeat="row in data.rows" ui-tree-node ng-include="'rows_renderer.html'" ng-init="parent=data"></div>
</div>
</div>
</div>
</div>
<%--<pre class="code">{{ data | json }}</pre>--%>
</div>
</div>
<div>
<button ng-click="saveRepositoryInterfaceData()" type="button" class="btn btn-success">Salvar</button>
<a class="btn btn-danger pullright" href="<%=request.getContextPath()%>/user/repositoryListInterfaces.do">Sair</a>
</div>
</div>
</div>
<!--TEMPLATE RECURSIVO-->
<script type="text/ng-template" id="rows_renderer.html">
<!--Para nao deixar fazer drag-->
<div class="row clearfix" ng-class="{modified: node.modified, nodrop: node.nodrop, nodrag: node.nodrag, moved: node.moved}">
<div class="panel panel-primary">
<div class="panel-heading">
<i class="glyphicon glyphicon-resize-vertical" ui-tree-handle></i> Linha {{$index + 1}}
<button ng-click="removeRow(parent,$index)" class="btn btn-danger btn-xs pull-right"><span class="glyphicon glyphicon-remove"></span></button>
</div>
<div class="panel-body">
<div class="form-group">
<label class="col-md-1 control-label">Título</label>
<div class="col-md-9">
<input type="text" class="form-control" ng-model="row.title"/>
</div>
<div class="col-md-2">
<select ng-class="{'bg-red': row.showTitle == false, 'bg-green': row.showTitle == true}" class="form-control chosenOff" type="text" ng-model="row.showTitle" ng-options="o.v as o.n for o in [{ n: 'Mostrar', v: true }, { n: 'Não Mostrar', v: false }]">>
</select>
</div>
</div>
<div class="form-group">
<label class="col-md-1 control-label">Descrição</label>
<div class="col-md-9">
<textarea rows="3" class="form-control" ng-model="row.description">
</textarea>
</div>
<div class="col-md-2">
<select ng-class="{'bg-red': row.showDescription == false, 'bg-green': row.showDescription == true}" class="form-control chosenOff" type="text" ng-model="row.showDescription" ng-options="o.v as o.n for o in [{ n: 'Mostrar', v: true }, { n: 'Não Mostrar', v: false }]">>
</select>
</div>
</div>
<div class="col-md-12" style="padding: 10px">
<div class="panel panel-info">
<div class="panel-heading clearfix">
Colunas
<button ng-click="addColumn(row)" class="btn btn-default pull-right"><span class="glyphicon glyphicon-plus"></span> Coluna</button>
</div>
<div class="panel-body">
<div class="row" style="padding-left: 0" ui-tree-nodes="" ng-model="row.columns">
<div style="padding: 10px" ng-class="getColStyle(column)" ng-repeat="column in row.columns" ui-tree-node ng-include="'columns_renderer.html'" ng-init="parent=row">
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</script>
<!--TEMPLATE RECURSIVO-->
<script type="text/ng-template" id="columns_renderer.html">
<!--Para nao deixar fazer drag-->
<div class="clearfix" ng-class="{modified: node.modified, nodrop: node.nodrop, nodrag: node.nodrag, moved: node.moved}">
<div class="panel panel-primary">
<div class="panel-heading clearfix">
<i class="glyphicon glyphicon-resize-vertical" ui-tree-handle></i>
Coluna {{$index + 1}}
<select class=" chosenOff"
style="color:black"
ng-model="column.cols"
ng-options="o.v as o.n for o in [{ n: '1', v: 1 },{ n: '2', v: 2 },{ n: '3', v: 3 }, { n: '4', v: 4 }, { n: '5', v: 5 }, { n: '6', v: 6 }, { n: '7', v: 7 }, { n: '8', v: 8 }, { n: '9', v: 9 }, { n: '10', v: 10 }, { n: '11', v: 11 }, { n: '12', v: 12 }]">
</select>
<button ng-click="removeColumn(parent,$index)" class="btn btn-danger btn-xs pull-right"><span class="glyphicon glyphicon-remove"></span></button>
</div>
<div class="panel-body">
<div class="form-group">
<label class="col-md-3 control-label">Título</label>
<div class="col-md-7">
<input type="text" class="form-control" ng-model="column.title"/>
</div>
<div class="col-md-2">
<select ng-class="{'bg-red': column.showTitle == false, 'bg-green': column.showTitle == true}" class="form-control chosenOff" ng-model="column.showTitle" ng-options="o.v as o.n for o in [{ n: 'Mostrar', v: true }, { n: 'Não Mostrar', v: false }]">
</select>
</div>
</div>
<div class="form-group">
<label class="col-md-3 control-label">Descrição</label>
<div class="col-md-7">
<textarea rows="3" class="form-control" ng-model="column.description">
</textarea>
</div>
<div class="col-md-2">
<select ng-class="{'bg-red': column.showDescription == false, 'bg-green': column.showDescription == true}" class="form-control chosenOff" ng-model="column.showDescription" ng-options="o.v as o.n for o in [{ n: 'Mostrar', v: true }, { n: 'Não Mostrar', v: false }]">
</select>
</div>
</div>
<div class="col-md-12" style="padding: 10px">
<div class="panel panel-info">
<div class="panel-heading clearfix">
Blocos
<button ng-click="addBlock(column)" class="btn btn-default pull-right"><span class="glyphicon glyphicon-plus"></span> Bloco</button>
</div>
<div class="panel-body">
<div style="padding-left: 0" ui-tree-nodes="" ng-model="column.blocks">
<div ng-repeat="block in column.blocks" ui-tree-node ng-include="'blocks_renderer.html'" ng-init="parent=column">
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</script>
<!--TEMPLATE RECURSIVO-->
<script type="text/ng-template" id="blocks_renderer.html">
<!--Para nao deixar fazer drag-->
<div class="clearfix" ng-class="{modified: node.modified, nodrop: node.nodrop, nodrag: node.nodrag, moved: node.moved}">
<div class="panel panel-success">
<div class="panel-heading clearfix">
<i class="glyphicon glyphicon-resize-vertical" ui-tree-handle></i>
Bloco {{$index + 1}}
<button ng-click="removeBlock(parent,$index)" class="btn btn-danger btn-xs pull-right"><span class="glyphicon glyphicon-remove"></span></button>
</div>
<div class="panel-body">
<div class="alert alert-warning" ng-show="block.showTitle == false && !block.tree && block.browseMinimizeMaximize">
Aviso: Título oculto, Lista Flat e Iniciar Minimizado implica que não aparece o bloco do Titulo com o Expandir
</div>
<div class="form-group">
<label class="col-md-3 control-label">Título</label>
<div class="col-md-7">
<input type="text" class="form-control" ng-model="block.title"/>
</div>
<div class="col-md-2">
<select ng-class="{'bg-red': block.showTitle == false, 'bg-green': block.showTitle == true}" class="form-control chosenOff" ng-model="block.showTitle" ng-options="o.v as o.n for o in [{ n: 'Mostrar', v: true }, { n: 'Não Mostrar', v: false }]">
</select>
</div>
</div>
<div class="form-group">
<label class="col-md-3 control-label">Descrição</label>
<div class="col-md-7">
<textarea rows="3" class="form-control" ng-model="block.description">
</textarea>
</div>
<div class="col-md-2">
<select ng-class="{'bg-red': block.showDescription == false, 'bg-green': block.showDescription == true}" class="form-control chosenOff" ng-model="block.showDescription" ng-options="o.v as o.n for o in [{ n: 'Mostrar', v: true }, { n: 'Não Mostrar', v: false }]">
</select>
</div>
</div>
<div class="well well-sm">Colecções</div>
<div class="form-group">
<label class="col-md-3 control-label">Min/Max</label>
<div class="col-md-9">
<select class="form-control chosenOff" ng-model="block.browseMinimizeMaximize" ng-options="o.v as o.n for o in [{ n: 'Iniciar Minimizado', v: true }, { n: 'Iniciar Maximizado', v: false }]">
</select>
</div>
</div>
<div class="form-group">
<label class="col-md-3 control-label">Estrutura</label>
<div class="col-md-9">
<select class="form-control chosenOff" ng-model="block.tree" ng-options="o.v as o.n for o in [{ n: 'Ramificar em Árvore', v: true }, { n: 'Lista Flat', v: false }]">
</select>
</div>
</div>
<div class="form-group">
<label class="col-md-3 control-label">Colecção</label>
<div class="col-md-7">
<select place-holder="Escolha Colecção" ng-model="block.choosedCol" class="form-control chosenOff" ng-options="collection as collection.pathName for collection in collections track by collection.id" ng-model="selected">
</select>
</div>
<div class="col-md-2">
<button ng-click="addCollectionId(block)" class="btn btn-success btn-xs"><span class="glyphicon glyphicon-plus"></span></button>
</div>
</div>
<div class="form-group">
<label class="col-md-3 control-label">Escolhidas</label>
<div class="col-md-9">
<div class="list-group">
<div class="list-group-item" ng-repeat="cid in block.collectionIds">
{{getCollectionTreeName(cid)}}
<button ng-click="removeCollectionId(block,$index)" class="btn btn-danger btn-xs pull-right"><span class="glyphicon glyphicon-remove"/></button>
</div>
</div>
</div>
</div>
<div class="well well-sm">Documentos</div>
<div class="form-group">
<label class="col-md-3 control-label">Ordenar</label>
<div class="col-md-9">
<select class="form-control chosenOff" ng-model="block.orderBy" ng-options="o.v as o.n for o in [{ n: 'Titulo', v: 'title' }, { n: 'Data Publicação Asc', v: 'publishDateAsc' } , { n: 'Data Publicação Desc', v: 'publishDateDesc' }, { n: 'Data Criação Asc', v: 'saveDateAsc' }, { n: 'Data Criação Desc', v: 'saveDateDesc' }, { n: 'Data Atualização Asc', v: 'updateDateAsc' }, { n: 'Data Atualização Desc', v: 'updateDateDesc' }]">
</select>
</div>
</div>
<div class="form-group">
<label class="col-md-3 control-label">Formato Datas</label>
<div class="col-md-9">
<select class="form-control chosenOff" ng-model="block.datesFormat" ng-options="o.v as o.n for o in [{ n: 'Ano/Mes/dia', v: 'YY_MM_DD' }, { n: 'Ano/Mes', v: 'YY_MM' }, { n: 'Ano', v: 'YY' }]">
</select>
</div>
</div>
<div class="form-group">
<label class="col-md-3 control-label">Metadados</label>
<div class="col-md-9">
<select ng-class="{'bg-red': block.showDocumentMetaData == false, 'bg-green': block.showDocumentMetaData == true}" class="form-control chosenOff" ng-model="block.showDocumentMetaData" ng-options="o.v as o.n for o in [{ n: 'Mostrar', v: true }, { n: 'Não Mostrar', v: false }]">
</select>
</div>
</div>
<%-- <div class="form-group">
<label class="control-label col-md-3">Data Publi. Máxima</label>
<div class="col-sm-7">
<md-datepicker
ng-init="date = (block.maxPublishDate | toDate)"
ng-model="date"
ng-change="block.maxPublishDate = date.toISOString()"
></md-datepicker>
</div>
</div>--%>
<div class="form-group">
<label class="control-label col-md-3">Data Publi. Máxima</label>
<div class="col-sm-7">
<div class='input-group date datetimepicker' ng-click="setMaxPublishDate($event,block)">
<input ng-model="block.maxPublishDateStr" type="text" class="form-control" ng-init="updateDatetimePickers()"/>
<span class="input-group-addon">
<span class="glyphicon glyphicon-calendar"></span>
</span>
</div>
</div>
<div class="col-sm-2">
<button type="button" class="btn btn-danger" ng-click="clearDateMax(block)"><span class="glyphicon glyphicon-remove"></span></button>
</div>
</div>
<div class="form-group">
<label class="control-label col-md-3">Data Publi. Mínima</label>
<div class="col-sm-7">
<div class='input-group date datetimepicker' ng-click="setMinPublishDate($event,block)">
<input ng-model="block.minPublishDateStr" type="text" class="form-control" ng-init="updateDatetimePickers()"/>
<span class="input-group-addon">
<span class="glyphicon glyphicon-calendar"></span>
</span>
</div>
</div>
<div class="col-sm-2">
<button type="button" class="btn btn-danger" ng-click="clearDateMin(block)"><span class="glyphicon glyphicon-remove"></span></button>
</div>
</div>
<div class="well well-sm">Ficheiros</div>
<div class="form-group">
<label class="col-md-3 control-label">Titulos</label>
<div class="col-md-9">
<select ng-class="{'bg-red': block.showFileTitle == false, 'bg-green': block.showFileTitle == true}" class="form-control chosenOff" ng-model="block.showFileTitle" ng-options="o.v as o.n for o in [{ n: 'Mostrar', v: true }, { n: 'Não Mostrar', v: false }]">
</select>
</div>
</div>
<div class="form-group">
<label class="col-md-3 control-label">Descrições</label>
<div class="col-md-9">
<select ng-class="{'bg-red': block.showFileDescription == false, 'bg-green': block.showFileDescription == true}" class="form-control chosenOff" ng-model="block.showFileDescription" ng-options="o.v as o.n for o in [{ n: 'Mostrar', v: true }, { n: 'Não Mostrar', v: false }]">
</select>
</div>
</div>
</div>
</div>
</div>
</script>
Generated by GNU Enscript 1.6.5.2.