artifactVersionDetailViewModel.display();
}
+
ArtifactVersionDetailViewModel=function(groupId,artifactId,version){
var mainContent = $("#main-content");
var self=this;
this.artifactId=artifactId;
this.version=version;
this.projectVersionMetadata=null;
-
+ this.entries=ko.observableArray([]);
displayGroupId=function(groupId){
displayGroupDetail(groupId,null);
}
}
+ if ($(e.target).attr("href")=="#artifact-details-metadatas-content") {
+ $.log("artifact metadata");
+ var metadatasContentDiv=mainContent.find("#artifact-details-metadatas-content" );
+ //if( $.trim(metadatasContentDiv.html()).length<1){
+ //metadatasContentDiv.html(mediumSpinnerImg());
+ var metadatasUrl="restServices/archivaServices/browseService/metadatas/"+encodeURIComponent(groupId);
+ metadatasUrl+="/"+encodeURIComponent(artifactId);
+ metadatasUrl+="/"+encodeURIComponent(version);
+ var selectedRepo=getSelectedBrowsingRepository();
+ if (selectedRepo){
+ metadatasUrl+="?repositoryId="+encodeURIComponent(selectedRepo);
+ }
+ $.ajax(metadatasUrl, {
+ type: "GET",
+ dataType: 'json',
+ success: function(data) {
+ self.entries([new MetadataEntry("foo","bar")]);
+ }
+ });
+ //}
+ }
+
+
});
}
});
var artifactVersionDetailViewModel = new ArtifactVersionDetailViewModel (groupId,artifactId,version)
artifactVersionDetailViewModel.display();
}
+
+
+ addProperty=function(){
+ self.entries.push(new MetadataEntry("","",true));
+ }
+
+ deleteProperty=function(entry){
+
+ self.entries.remove(entry);
+ }
+
+ saveProperty=function(entry){
+ var metadatasContentDiv=mainContent.find("#artifact-details-metadatas-content" );
+ //if( $.trim(metadatasContentDiv.html()).length<1){
+ //metadatasContentDiv.html(mediumSpinnerImg());
+ var metadatasUrl="restServices/archivaServices/browseService/metadatas/"+encodeURIComponent(groupId);
+ metadatasUrl+="/"+encodeURIComponent(artifactId);
+ metadatasUrl+="/"+encodeURIComponent(version);
+ metadatasUrl+="/"+encodeURIComponent(entry.key());
+ metadatasUrl+="/"+encodeURIComponent(entry.value());
+ var selectedRepo=getSelectedBrowsingRepository();
+ if (selectedRepo){
+ metadatasUrl+="?repositoryId="+encodeURIComponent(selectedRepo);
+ }
+ $.ajax(metadatasUrl, {
+ type: "PUT",
+ dataType: 'json',
+ success: function(data) {
+ displaySuccessMessage( $.i18n.prop("artifact.metadata.added"));
+ entry.modified(false);
+ }
+ });
+ }
+
+
+ this.gridMetatadasViewModel = new ko.simpleGrid.viewModel({
+ data: self.entries,
+ columns: [
+ {
+ headerText: $.i18n.prop('browse.artifact.metadata.key'),
+ rowText: "key",
+ id: "key"
+ },
+ {
+ headerText: $.i18n.prop('browse.artifact.metadata.value'),
+ rowText: "value",
+ id: "value"
+ }
+ ],
+ pageSize: 10
+ });
+
+ }
+
+
+ MetadataEntry=function(key,value,editable){
+ var self=this;
+ this.key=ko.observable(key);
+ this.key.subscribe(function(newValue){self.modified(true)});
+ this.value=ko.observable(value);
+ this.value.subscribe(function(newValue){self.modified(true)});
+ this.editable=ko.observable(editable);
+ this.modified=ko.observable(false)
}
TreeEntry=function(artifact,childs){
</div>
<div id="artifact-details-metadatas-content" class="tab-pane">
- metadatas
+ <table class="table table-striped table-bordered" id="artifact-details-metadatas-content-table"
+ data-bind="simpleGrid: gridMetatadasViewModel,simpleGridTemplate:'artifact_metadata_properties_tmpl',pageLinksId:'artifactMetadata_Pagination'">
+
+ </table>
+ <div id="artifactMetadata_Pagination"></div>
+ <a href="#" class="btn btn-primary" data-bind="click: addProperty">${$.i18n.prop('browse.artifact.metadatas.add')}</a>
</div>
</div>
</li>
{{/each}}
</ul>
+</script>
+
+<script id="artifact_metadata_properties_tmpl" type="text/html">
+ <thead>
+ <tr>
+ {{each(i, columnDefinition) columns}}
+ <th title="${columnDefinition.title }">${columnDefinition.headerText }</th>
+ {{/each}}
+ <th title="${$.i18n.prop('browse.artifact.metadatas.delete')}">${$.i18n.prop('browse.artifact.metadatas.delete')}</th>
+ <th title="${$.i18n.prop('browse.artifact.metadatas.delete')}">${$.i18n.prop('browse.artifact.metadatas.save')}</th>
+ </tr>
+
+ </thead>
+ <tbody>
+ {{each(i, row) itemsOnCurrentPage()}}
+ <tr>
+ {{each(j, columnDefinition) columns}}
+ {{if row.editable}}
+ <td><input type="text" data-bind="value: row[columnDefinition.rowText]"/></td>
+ {{else}}
+ <td>${ typeof columnDefinition.rowText == 'function' ? columnDefinition.rowText(row) : row[columnDefinition.rowText] }</td>
+ {{/if}}
+ {{/each}}
+ <td><a href="#" class="btn btn-danger" data-bind="click: function(){deleteProperty(row)}">${$.i18n.prop('browse.artifact.metadatas.delete')}</a></td>
+ <td>
+ {{if row.modified}}
+ <a href="#" class="btn btn-warning" data-bind="click: function(){saveProperty(row)}">${$.i18n.prop('browse.artifact.metadatas.save')}</a>
+ {{/if}}
+ </td>
+ </tr>
+ {{/each}}
+ </tbody>
</script>
\ No newline at end of file