Skip to content

Commit

Permalink
Merge pull request #7 from mewhz/dev
Browse files Browse the repository at this point in the history
Dev
  • Loading branch information
mewhz authored Jan 2, 2022
2 parents 95855a2 + e1078cb commit 819e33c
Show file tree
Hide file tree
Showing 9 changed files with 177 additions and 126 deletions.
72 changes: 18 additions & 54 deletions src/main/java/com/mewhz/paste/controller/CodeController.java
Original file line number Diff line number Diff line change
Expand Up @@ -2,85 +2,49 @@


import cn.hutool.db.Entity;
import cn.hutool.json.JSONObject;
import cn.hutool.json.JSONUtil;
import com.mewhz.paste.utils.CodeSQL;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.servlet.ModelAndView;

import java.util.List;

/**
* @author mewhz
*/
@Controller
@RestController
public class CodeController {

@RequestMapping("/code")
@ResponseBody
public String code(@RequestParam String id) {
String htmlFront = "<!DOCTYPE html>\n" +
"<html lang=\"en\">\n" +
"<head>\n" +
" <meta charset=\"UTF-8\">\n" +
" <title>";
String htmlTitle ="</title>\n" +
" <link href=\"css/prism.css\" rel=\"stylesheet\">\n" +
" <link rel=\"stylesheet\" href=\"css/bootstrap.min.css\"/>\n" +
" <link href=\"https://cdn.bootcdn.net/ajax/libs/toastr.js/latest/css/toastr.min.css\" rel=\"stylesheet\">"+
"</head>\n" +
"<body>\n" +
" <pre>\n" +
" <code id=\"code\" class=\"language-";
public ModelAndView code(@RequestParam String id){
ModelAndView mav = new ModelAndView("/code.html");
return mav;
}

@RequestMapping("/selectCode")
public JSONObject selectCode(@RequestParam String id){

JSONObject json = JSONUtil.createObj();
String type = null;
String text = null;
String remark = null;
String htmlLast = " </code>\n" +
" </pre>\n" +
"<button id=\"button\" class=\"btn btn-success\" class=\"btn btn-success\" onclick=\"copy()\" data-clipboard-target=\"#code\" data-clipboard-action=\"copy\">一键复制</button>"+
" <script src=\"js/prism.js\"></script>\n"+
"<script src=\"js/jquery-3.6.0.min.js\"></script>\n" +
"<script src=\"https://cdn.jsdelivr.net/npm/[email protected]/dist/clipboard.min.js\"></script>\n"+
"<script src=\"js/code.js\"></script>\n" +
"<script src=\"https://cdn.bootcdn.net/ajax/libs/toastr.js/latest/js/toastr.min.js\"></script>";

String htmlEnd = "</body>\n" +
"</html>";
StringBuilder html = new StringBuilder(htmlFront);

String cHtml = "<script src=\"js/prism-c.min.js\"></script>\n" +
"<script src=\"js/prism-cpp.min.js\"></script>\n";
String javaHtml = "<script src=\"js/prism-java.min.js\"></script>\n";
String pythonHtml = "<script src=\"js/prism-python.min.js\"></script>\n";


CodeSQL codesql = new CodeSQL();
List<Entity> list = codesql.findCode(id);

type = (String) list.get(0).get("type");
text = (String) list.get(0).get("text");
remark = (String) list.get(0).get("remark");
if ("".equals(remark)){
remark = "贴代码";
}

text = text.replaceAll("<", "&lt;");
text = text.replaceAll(">", "&gt;");
text = text.replaceAll("\n", "<br>");
text = text.replaceAll(" ", "&nbsp;");

html.append(remark).append(htmlTitle).append(type).append("\">").append(text).append(htmlLast);
if ("cpp".equals(type)){
html.append(cHtml);
}
else if ("java".equals(type)){
html.append(javaHtml);
}
else if ("python".equals(type)){
html.append(pythonHtml);
}
html.append(htmlEnd);
json.append("text", text);
json.append("type", type);
json.append("remark", remark);

return html.toString();
return json;
}
}
42 changes: 37 additions & 5 deletions src/main/java/com/mewhz/paste/controller/ListController.java
Original file line number Diff line number Diff line change
@@ -1,22 +1,22 @@
package com.mewhz.paste.controller;

import cn.hutool.db.Entity;
import cn.hutool.json.JSONObject;
import cn.hutool.json.JSONUtil;
import com.mewhz.paste.utils.CodeSQL;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.servlet.ModelAndView;

import java.util.List;

/**
* @author mewhz
*/
@Controller

@RestController
public class ListController {

@ResponseBody
@RequestMapping(value = "/list")
public String list(@RequestParam(value = "id", required = false) String id ){

Expand Down Expand Up @@ -82,4 +82,36 @@ public String list(@RequestParam(value = "id", required = false) String id ){
return html.toString();
}


@RequestMapping("/lists")
public ModelAndView lists(@RequestParam(value = "id", required = false) String id ){

ModelAndView mav = new ModelAndView("/list.html");

return mav;

}

@RequestMapping("/selectList")
@CrossOrigin("http://localhost:63343")
public JSONObject selectList(@RequestParam(value = "id", required = false) String id){
JSONObject json = JSONUtil.createObj();
CodeSQL codeSQL = new CodeSQL();

List<Entity> list = codeSQL.findIdentifyingCode(id);
if (list.size() == 0){
json.append("info", "zero");
return json;
}
for (Entity e : list){
json.append("date", e.get("date"));
json.append("time_id", e.get("time_id"));
json.append("remark", e.get("remark"));
json.append("type", e.get("type"));
json.append("text", e.get("text"));
}
System.out.println(json);
return json;
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,9 @@ public class LoginController {
@RequestMapping("/login")
public String login(@RequestParam String user, @RequestParam String pass){
System.out.println(user + " " + pass);
return user + " " + pass;
if (!"admin".equals(user) || !"admin".equals(pass)){
return "ERROR";
}
return "success";
}
}
21 changes: 5 additions & 16 deletions src/main/resources/static/code.html
Original file line number Diff line number Diff line change
Expand Up @@ -9,25 +9,14 @@
</head>
<body>
<pre>
<code class="language-cpp" id="code">#include &lt;iostream&gt;
using namespace std;
int main() {
int n;
cin >> n;
cout << n << endl;
return 0;
}
<code id="code" class="code">
</code>
</pre>
<button id="button" class="btn btn-success" onclick="copy()" data-clipboard-target="#code" data-clipboard-action="copy">一键复制</button>
<button class="btn btn-success button" data-clipboard-target="#code" data-clipboard-action="copy">一键复制</button>
<script src="js/prism.js"></script>
<script src="js/prism-c.min.js"></script>
<script src="js/prism-cpp.min.js"></script>
<script src="js/jquery-3.6.0.min.js"></script>
<script src="js/jquery-3.6.0.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/[email protected]/dist/clipboard.min.js"></script>
<script src="js/code.js"></script>
<script src="https://cdn.bootcdn.net/ajax/libs/toastr.js/latest/js/toastr.min.js"></script>
<!-- <script src="js/prism-java.min.js"></script>-->
<!-- <script src="js/prism-python.min.js"></script>-->
<script src="https://cdn.bootcdn.net/ajax/libs/toastr.js/latest/js/toastr.min.js"></script>
<script src="js/code.js" type="module"></script>
</body>
</html>
57 changes: 39 additions & 18 deletions src/main/resources/static/js/code.js
Original file line number Diff line number Diff line change
@@ -1,20 +1,41 @@
// $(document).ready(()=>{
// $("#button").click(()=>{
// let text = $("#code").text();
// navigator.clipboard.writeText(text);
// toastr.success("复制成功,快去粘贴吧!");
// });
// });
function copy(){
let clipboard = new ClipboardJS('#button');
clipboard.on('success', function(e) {
e.clearSelection();
clipboard.destroy();
// 释放内存,如果不释放,下次总会多复制
toastr.success("复制成功,快去粘贴吧!");
});
import {copy, getQueryVariable} from './utils.js'

$(document).ready(()=>{

clipboard.on('error', function(e) {
toastr.error("一键复制失败,请手动复制!")
$(".button").click((e)=>{

let id = $(e.target).attr("id");
// 单击事件复制
copy(id);
});
}

let id = getQueryVariable("id");
const codeId = $("#code");
const title = $("title");
const body = $("body");
$.ajax({
url: "/selectCode?id=" + id,
success: (result)=>{
codeId.attr("class","language-" + result.type);
codeId.text(result.text);
title.text(result.remark);
if (result.remark === "") {
title.text("贴代码");
}
console.log(result.type[0]);
switch (result.type[0]){
case "java":
body.append('<script src="js/prism-java.min.js"></script>');
break;
case "cpp":
body.append('<script src="js/prism-c.min.js"></script>');
body.append('<script src="js/prism-cpp.min.js"></script>');
break;
case "python":
body.append('<script src="js/prism-python.min.js"></script>');
}
// 对代码重新渲染
Prism.highlightAll();
}
})
});
40 changes: 40 additions & 0 deletions src/main/resources/static/js/list.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
import {copy, getQueryVariable} from './utils.js'

$(document).ready(()=>{
let all = $("#all");
let body = $("body");
let set = new Set();
let id = getQueryVariable("id");

$.ajax({
url: "/selectList?id=" + id,
success: (result) => {
console.log(result.type);
let len = result.type.length;
let type = result.type;
let date = result.date;
let time_id = result.time_id;
let text = result.text;
let remark = result.remark;
for (let i = 0; i < len; i ++){
all.append("<details><summary>"+ date[i] +" " + time_id[i] + " " + remark[i] + "</summary>" +
"<pre><code class='language-"+ type[i] +"'>"+ text[i] +"</code></pre></details>");
if (!set.has(type[i])){
switch (type[i]){
case "java":
body.append('<script src="js/prism-java.min.js"></script>');
break;
case "cpp":
body.append('<script src="js/prism-c.min.js"></script>');
body.append('<script src="js/prism-cpp.min.js"></script>');
break;
case "python":
body.append('<script src="js/prism-python.min.js"></script>');
}
set.add(type[i]);
}
}
Prism.highlightAll();
}
})
});
22 changes: 22 additions & 0 deletions src/main/resources/static/js/utils.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
export function copy(id){
let clipboard = new ClipboardJS('.button');
clipboard.on('success', (e)=>{
e.clearSelection();
// 释放内存,否则会多复制
clipboard.destroy();
toastr.success("复制成功,快去站贴吧!");
});

clipboard.on('error', (e)=>{
toastr.error("一键复制失败,请手动复制!");
})
}
export function getQueryVariable(variable){
let query = window.location.search.substring(1);
let vars = query.split("&");
for (let i = 0; i < vars.length; i ++){
let pair = vars[i].split("=");
if (pair[0] === variable) return pair[1];
}
return false;
}
37 changes: 5 additions & 32 deletions src/main/resources/static/list.html
Original file line number Diff line number Diff line change
Expand Up @@ -6,38 +6,11 @@
<link href="css/prism.css" rel="stylesheet">
</head>
<body>
<details>
<summary>NiHao</summary>
<pre>
<code class="language-cpp">
<div id="all">

using namespace std;
const int N = 205;
int score[5][5] = {{0,0,1,1,0},{1,0,0,1,0},{0,1,0,0,1},{0,0,1,0,1},{1,1,0,0,0}};
int a,b,n;
int na[N],nb[N];
int main(){
scanf("%d%d%d", &n,&a,&b);
int A = 0, B = 0;
for (int i = 0; i < a; i++) scanf("%d", &na[i]);
for (int i = 0; i < b; i++) scanf("%d", &nb[i]);
for (int i = 0; i < n; i++){
A += score[na[i % a]][nb[i % b]];
B += score[nb[i % b]][na[i % a]];
}
cout << A << " " << B;
return 0;
}
</code>
</pre>
</details>
<details>
<summary>One</summary>
<p>World</p>
</details>
<script src="js/prism.js"></script>
<script src="js/prism-c.min.js"></script>
<script src="js/prism-cpp.min.js"></script>
<script src="js/prism-java.min.js"></script>
</div>
<script src="js/prism.js"></script>
<script src="js/jquery-3.6.0.min.js"></script>
<script src="js/list.js" type="module"></script>
</body>
</html>
7 changes: 7 additions & 0 deletions src/test/java/com/mewhz/paste/Main.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
package com.mewhz.paste;

public class Main {
public static void main(String[] args) {
System.out.println("Hello World");
}
}

0 comments on commit 819e33c

Please sign in to comment.